# 计算器系统主程序
from pyecharts.charts import Page, Bar
from pyecharts import options as opts
import webbrowser
import os
from 菜单 import *
from 加法 import *
from 减法 import *
from 乘法 import *
from 除法 import *


# 全局变量存储计算结果
计算历史 = []


def 更新图表():
    """使用pyecharts生成柱状图显示计算历史"""
    # 创建页面
    page = Page(layout=Page.SimplePageLayout)

    # 创建柱状图

    bar = Bar()
    bar.set_global_opts(
        title_opts=opts.TitleOpts(title="计算器结果记录"),
        xaxis_opts=opts.AxisOpts(name="计算次数"),
        yaxis_opts=opts.AxisOpts(name="计算结果"),
    )
    # 将图表添加到页面
    page.add(bar)

    # 保存为HTML文件
    page.render("计算结果.html")

    # 自动打开浏览器显示结果
    webbrowser.open('file://' + os.path.realpath("计算结果.html"))


def 欢迎信息():
    print("\n欢迎使用计算器系统！")
菜单选项 = [
    "1.加法",
    "2.减法",
    "3.乘法",
    "4.除法",
    "5.退出"
]

# 系统成员列表
成员列表 = [
    '张天香\n',
    '孙优丹\n',
    '辛孟芮\n',
    '杨子琪\n'
]




def 加法():
    """两个数字相加"""
    print("\n=== 两个数字相加 ===")
    a=float(input("请输入第一个数字: "))
    b=float(input("请输入第二个数字: "))
    sum=a+b
    print(f"总和 = {sum}")

def 多个数字相加():
    """多个数字相加"""
    print("\n=== 多个数字相加 ===")
    数量 = int(input("请输入要相加的数字个数: "))
    sum=0
    for i in range(数量):
        print(f"请输入第{i+1}个数字: ")
        a=float(input())
        sum=sum+a
    print(f"总和 = {sum}")

def 减法():
    num1 = int(input("请输入第一个数字："))
    num2 = int(input("请输入第二个数字："))
    result = num1 - num2
    print("结果为：", result)

def 多个数字相减():
    print("------多个数字相减------")
    number = int(input("请输入需要减法的数字个数："))
    a=float(input("请输入第一个数字："))
    result = a
    for i in range(1,number):
        print(f"请输入第 {i+1} 个数字：")
        b = float(input())
        result=result-b
    print("结果为：", result)

def 乘法():
    a = int(input("请输入第一个数字："))
    b = int(input("请输入第二个数字："))
    print("两个数相乘的结果是：", a * b)

def 多个数相乘():
    print('---多个数相乘---')
    number = int(input("请输入需要相乘的数字个数："))
    a = float(input("请输入第一个数字："))
    result = a
    for i in range(1,number):
        b=float(input(f'请输入第{i+1}个数字：'))
        result=result*b
    print("结果为：", result)

def 除法():
    num1 = int(input("请输入第一个数字："))
    num2 = int(input("请输入第二个数字："))
    if num2 == 0:
        print("除数不能为0！")
    else:
        result = num1 / num2
        print("结果为：", result)

def 多个数字相除():
    print('------多个数字相除------')
    number=int(input("请输入需要相除的个数："))
    a=float(input('请输入第一个数字：'))
    result=a
    for i in range(1,number):
        b=float(input(f'请输入第{i+1}个数字：'))
        if b==0:
            print("除数不能为0！")
            break
        else:
            result=result/b
    print("结果为：", result)


def 主函数():
    """主函数"""
    欢迎信息()

    while True:
        print("系统成员：")
        for 成员 in 成员列表:
            print(成员, end='')

        print("\n请选择一个功能：")
        for 选项 in 菜单选项:
            print(选项)
        选择 = input("请输入(1-5): ")

        if 选择 == "1":
            print("\n1. 两个数字相加")
            print("2. 多个数字相加")
            子选择 = input("请选择(1-2): ")
            if 子选择 == "1":
                结果 = 加法()
                if 结果 is not None:
                    计算历史.append(结果)
                    更新图表()
            elif 子选择 == "2":
                结果 = 多个数字相加()
                if 结果 is not None:
                    计算历史.append(结果)
                    更新图表()
            else:
                print("无效的选择！")

        elif 选择 == "2":
            print("\n1. 两个数字相减")
            print("2. 多个数字相减")
            子选择 = input("请选择(1-2): ")
            if 子选择 == "1":
                结果 = 减法()
                if 结果 is not None:
                    计算历史.append(结果)
                    更新图表()
            elif 子选择 == "2":
                结果 = 多个数字相减()
                if 结果 is not None:
                    计算历史.append(结果)
                    更新图表()
            else:
                print("无效的选择！")

        elif 选择 == "3":
            print("\n1. 两个数字相乘")
            print("2. 多个数字相乘")
            子选择 = input("请选择(1-2): ")
            if 子选择 == "1":
                结果 = 乘法()
                if 结果 is not None:
                    计算历史.append(结果)
                    更新图表()
            elif 子选择 == "2":
                结果 = 乘法()
                if 结果 is not None:
                    计算历史.append(结果)
                    更新图表()
            else:
                print("无效的选择！")

        elif 选择 == "4":
            print("\n1. 两个数字相除")
            print("2. 多个数字相除")
            子选择 = input("请选择(1-2): ")
            if 子选择 == "1":
                结果 = 除法()
                if 结果 is not None:
                    计算历史.append(结果)
                    更新图表()
            elif 子选择 == "2":
                结果 = 多个数字相除()
                if 结果 is not None:
                    计算历史.append(结果)
                    更新图表()
            else:
                print("无效的选择！")

        elif 选择 == "5":
            print("退出系统！")
            break
        else:
            print("无效的选择！")

    主函数()
